home *** CD-ROM | disk | FTP | other *** search
/ Practical Algorithms for Image Analysis / Practical Algorithms for Image Analysis.iso / TARFILE.GZ / tarfile / ch_3.5 / bcd / edge / loc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-09-11  |  2.1 KB  |  84 lines

  1. /*
  2.  * (c) Copyright 1988 by
  3.  * Robotics Principles Research Department, ATT Bell Laboratories.
  4.  * All rights reserved.
  5.  * Last modified 2/8/88 Ingemar J. Cox
  6.  * C version 8/2/88 Deborah A. Wallach
  7.  * C version 11/4/88 W, J Kropfl
  8.  */
  9. #include <stdio.h>
  10. #include <math.h>
  11. #include "edge_finder.h"
  12.  
  13. extern struct image *my_image;
  14. extern int nxXny;
  15.  
  16. int image_locx(iy, ix, index)
  17. register int ix, iy, index;        /* index = iy*nx+ix */
  18. {
  19.     register int *imP;
  20.     register int nx = my_image->nx; 
  21.  
  22. /*    if(index<=0 || index>=nxXny) */
  23.     if(ix<2 || ix>nx-2 || iy<0 || iy>my_image->ny-1)
  24.         return(0);
  25.  
  26. /*    return(gauss[iy*nx+x-1]+gauss[iy*nx+ix+1]-2*gauss[iy*nx+ix]);*/
  27.  
  28. /*    return(idx[iy*nx+ix] - idx[iy*nx+ix-1]); */
  29.     imP = &my_image->idx[index];
  30.     return(*imP - *(imP-1));
  31. }
  32.  
  33. int image_locy(iy, ix, index)
  34. register int ix, iy, index;        /* index = iy*nx+ix */
  35. {
  36.     register int *imP;
  37.     register int nx = my_image->nx;
  38.  
  39. /*    if(index<nx || index>=nxXny) */
  40.     if(ix<0 || ix>nx-1 || iy<2 || iy>my_image->ny-2)
  41.         return(0);
  42.  
  43. /*    return(gauss[(iy-1)*nx+ix]+gauss[(iy+1)*nx+ix]-2*gauss[iy*nx+ix]);*/
  44.  
  45. /*    return(idy[iy*nx+ix] - idy[(iy-1)*nx+ix]); */
  46.     imP = &my_image->idy[index];
  47.     return(*imP - *(imP-nx));
  48. }
  49.  
  50. int image_loc45(iy, ix, index)
  51. register int ix, iy, index;        /* index = iy*nx+ix */
  52. {
  53.     register int *imP;
  54.     register int nx = my_image->nx;
  55.  
  56. /*    if(index<nx || index>=nxXny) */
  57.     if(ix<2 || ix>nx-2 || iy<2 || iy>my_image->ny-2)
  58.         return(0);
  59.  
  60. /*    return(gauss[(iy-1)*nx+ix+1]+gauss[(iy+1)*nx+ix-1]-2*gauss[iy*nx+ix]);*/
  61.  
  62. /*    return(id45[iy*nx+ix] - id45[(iy-1)*nx+ix+1]); */
  63.     imP = &my_image->id45[index];
  64.     return(*imP - *(imP-nx+1));
  65. }
  66.  
  67. int image_loc135(iy, ix, index)
  68. register int ix, iy, index;        /* index = iy*nx+ix */
  69. {
  70.     register int *imP;
  71.     register int nx = my_image->nx;
  72.  
  73. /*    if(index<=nx || index>=nxXny) */
  74.     if(ix<2 || ix>nx-2 || iy<2 || iy>my_image->ny-2)
  75.         return(0);
  76.  
  77. /*    return(gauss[(iy-1)*nx+ix-1]+gauss[(iy+1)*nx+ix+1]-2*gauss[iy*nx+ix]);*/
  78.  
  79. /*    return(id135[iy*nx+ix] - id135[(iy-1)*nx+ix-1]);*/
  80.     imP = &my_image->id135[index];
  81.     return(*imP - *(imP-nx-1));
  82. }
  83.  
  84.